package com.example.hosptial.service;

import com.example.hosptial.model.enity.Patient;
import com.example.hosptial.model.view.WardBedPatientView;
import com.example.hosptial.model.view.WardStatusView;

import java.util.List;
import java.util.Map;

public interface AdmissionService {
    // 获取科室的楼层列表
    List<Integer> getFloorsByDepartment(Integer deptId);

    // 获取指定楼层和科室的可用病房
    List<WardStatusView> getAvailableWardsByFloorAndDept(Integer deptId, Integer floorNum);

    // 获取指定病房的可用床位
    List<WardBedPatientView> getAvailableBedsByWard(Integer wardId);

    // 办理入院（使用存储过程）
    void admitPatient(String patientName, String patientGender, Integer patientAge,
                     String patientIdCard, String patientPhone, String conditionDesc,
                     String doctorId, Integer bedId);

    /**
     * 办理病人出院
     * @param patientId 病人ID
     * @param doctorId 主治医生ID（用于验证权限）
     * @throws IllegalArgumentException 如果参数无效
     * @throws SecurityException 如果没有权限
     */
    void dischargePatient(Integer patientId, String doctorId);

    /**
     * 验证医生是否有权限给指定病人办理出院
     * @param patientId 病人ID
     * @param doctorId 医生ID
     * @return 是否有权限
     */
    boolean validateDoctorAuthority(Integer patientId, String doctorId);
}